HTML5 アプリにおけるパフォーマンスの基礎知識
https://gyazo.com/6176bf895f8009bae8172da0f6ce15a5
尾上洋介
日本大学
https://speakerdeck.com/likr/html5apuriniokerupahuomansufalseji-chu-zhi-shi
HTML5アプリとは?
Webアプリ、PWA
Ionic、React Native
Electron
「HTML/CSS/JSで構成されたもの」を想定しています
パフォーマンスを気にする理由
ネイティブより遅いのは事実
ちゃんと実装を考えないとしんどくなる
機能追加は転送量の増加も招く
優れたUXは1つの価値の差別化
パフォーマンスを向上させよう!
PWA Checklist
https://developers.google.com/web/progressive-web-apps/checklist
ベースライン要件
低速回線対応(3G)
模範的なPWA
パフォーマンス
WEBアプリのパフォーマンス
パフォーマンスの指標
すぐに表示される
軽快に動作する
RAILパフォーマンスモデル
改善の方法
JS処理の高速化
アルゴリズムの改善
どこがボトルネックになっているかを考える
WebWorker
処理の並列化・マルチスレッド、バックグラウンド実行
WebAssembly
処理の高速化、チューニングされたC資産の利用
GPCPU(WebGL, WebGPU)
GPUによる処理の高速化
バックグラウンド処理
スタイルの最適化
必要リソースの削減
Loadingは引き算の考え方が必要=必要なリソースを選定する
無駄をなくす
どうしようもなくなったら
静的サイト
SSR
PRPL
Regular 3G(750kbps, 100ms RTT)でも快適にできるか?
開発者が楽にする必要はある、がそれでユーザーを負担させていいのか?
それでもどうしようもなくなったら
Tree Shakingで必要最小限のものだけ読む
Lazy Loadingを行う
リソース先読み
パフォーマンスの測定
Lighthouse
Webサイトの解析ツール
これからのWeb設計
後付でPWAにするのは難しい
最初からPWA意識した設計にする
PWAファースト(Lighthouseでスコアがでるようにする)
PWAの作り方
SPAをしっかりつくる
Service Worker, Web App Manifestに対応する
パフォーマンス・チューニングを頑張る
後からのパフォーマンス改善も大変
パフォーマンスファーストな設計を目指す
これからのハイパフォーマンスアプリ
Web Woker
Web Assembly
ES Modiles
HTTP/2
Web Components
Web標準も「パフォーマンス追求」の方向性へ
後付で対応するというのは非常に大変
エンジニアだけでは難しい
デザイナー、ディレクター…みんなでパフォーマンスを考えましょう
まとめ
ハイパフォーマンスを実現すべきために必要な対策を紹介
優れたUXを提供
RAILパフォーマンスモデル
最初からパフォーマンス考慮した設計を目指す
モバイルファースト
PWAファースト
パフォーマンスファースト